home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / time / RCS / Time_ToAscii.c,v < prev    next >
Text File  |  1992-03-27  |  6KB  |  294 lines

  1. head     1.5;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.4.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.5
  10. date     92.03.27.13.42.48;  author rab;  state Exp;
  11. branches ;
  12. next     1.4;
  13.  
  14. 1.4
  15. date     90.09.11.14.28.34;  author kupfer;  state Exp;
  16. branches 1.4.1.1;
  17. next     1.3;
  18.  
  19. 1.3
  20. date     88.07.25.11.16.44;  author ouster;  state Exp;
  21. branches ;
  22. next     1.2;
  23.  
  24. 1.2
  25. date     88.06.27.17.23.39;  author ouster;  state Exp;
  26. branches ;
  27. next     1.1;
  28.  
  29. 1.1
  30. date     88.06.19.14.33.04;  author ouster;  state Exp;
  31. branches ;
  32. next     ;
  33.  
  34. 1.4.1.1
  35. date     91.10.22.14.53.20;  author kupfer;  state Exp;
  36. branches ;
  37. next     ;
  38.  
  39.  
  40. desc
  41. @@
  42.  
  43.  
  44. 1.5
  45. log
  46. @Fixed a couple lint errors.
  47. @
  48. text
  49. @/* 
  50.  * Time_ToAscii.c --
  51.  *
  52.  *    Source code for the Time_ToAscii library procedure.
  53.  *
  54.  * Copyright 1988 Regents of the University of California
  55.  * Permission to use, copy, modify, and distribute this
  56.  * software and its documentation for any purpose and without
  57.  * fee is hereby granted, provided that the above copyright
  58.  * notice appear in all copies.  The University of California
  59.  * makes no representations about the suitability of this
  60.  * software for any purpose.  It is provided "as is" without
  61.  * express or implied warranty.
  62.  */
  63.  
  64. #ifndef lint
  65. static char rcsid[] = "$Header: /sprite/src/lib/c/time/RCS/Time_ToAscii.c,v 1.4 90/09/11 14:28:34 kupfer Exp Locker: rab $ SPRITE (Berkeley)";
  66. #endif not lint
  67.  
  68. #include <sprite.h>
  69. #include <spriteTime.h>
  70. #include <string.h>
  71.  
  72. /* 
  73.  * Forward declarations:
  74.  */
  75.  
  76. static void ConvertToNum _ARGS_((char *cp, int n, Boolean blank));
  77.  
  78.  
  79. /* 
  80.  *----------------------------------------------------------------------
  81.  *
  82.  *  ConvertToNum --
  83.  *
  84.  *    Converts a number into ascii string. The blank argument,
  85.  *    if TRUE specifies blank padding, and if FALSE, specifies
  86.  *    zero padding.
  87.  *
  88.  *  Result:
  89.  *    None.
  90.  *
  91.  *  Side effects:
  92.  *    None.
  93.  *
  94.  *----------------------------------------------------------------------
  95.  */
  96.  
  97. static void
  98. ConvertToNum(cp, n, blank)
  99.     register char *cp;
  100.     int n;
  101.     Boolean blank;
  102. {
  103.     if (n>=10) {
  104.         *cp = (n/10)%10 + '0';
  105.     } else if (blank) {
  106.         *cp = ' ';
  107.     }
  108.     cp++;
  109.     *cp = n%10 + '0';
  110. }
  111.  
  112. /*
  113.  *----------------------------------------------------------------------
  114.  *
  115.  *  Time_ToAscii --
  116.  *
  117.  *    Converts a time value into a human-readable string of
  118.  *    the current (absolute) time or relative time. 
  119.  *    The current time has the form:
  120.  *        Wed, 1 Jan 86 10:24:38
  121.  *    If relative time is specified, the time value is interpreted 
  122.  *    as the difference between two absolute time values and has the form:
  123.  *        0 days, 02:45:09
  124.  *
  125.  *    Note: this routine can be simplied once a sprintf routine is available.
  126.  *
  127.  * Results:
  128.  *    None.
  129.  *
  130.  * Side effects:
  131.  *    None.
  132.  *
  133.  *----------------------------------------------------------------------
  134.  */
  135.  
  136. void
  137. Time_ToAscii(time, relativeTime, bufferPtr)
  138.     int        time;
  139.     Boolean    relativeTime;
  140.     char    *bufferPtr;
  141. {
  142.     register char     *cp, *ncp;
  143.     Time_Parts        parts;
  144.  
  145.     Time_ToParts(time, relativeTime, &parts);
  146.  
  147.  
  148.     if (relativeTime) {
  149.     (void) strcpy(bufferPtr, " 00+00:00:00");
  150.     /*               012345678901+1 for null byte*/
  151.  
  152. #define DAY_OFFSET        1
  153. #define HOUR_OFFSET         4
  154. #define MINUTE_OFFSET         7
  155. #define SECOND_OFFSET         10
  156.  
  157.     cp = &bufferPtr[SECOND_OFFSET];
  158.     ConvertToNum(cp, parts.seconds, FALSE);
  159.  
  160.     cp = &bufferPtr[MINUTE_OFFSET];
  161.     ConvertToNum(cp, parts.minutes, FALSE);
  162.  
  163.     cp = &bufferPtr[HOUR_OFFSET];
  164.     ConvertToNum(cp, parts.hours, FALSE);
  165.  
  166.     cp = &bufferPtr[DAY_OFFSET];
  167.     if (parts.dayOfYear < 0) {
  168.         bufferPtr[0] = '-';
  169.         ConvertToNum(cp, -parts.dayOfYear, TRUE);
  170.     } else {
  171.         ConvertToNum(cp, parts.dayOfYear, TRUE);
  172.     }
  173.  
  174.  
  175.     } else {
  176.  
  177.     /*
  178.      * Use the Arpanet standard format for date & time.
  179.      * The timezone is ignored for now (goes at the end of the line).
  180.      */
  181.  
  182.     (void) strcpy(bufferPtr, "Day, DD MMM YY 00:00:00");
  183.     /*               01234567890123456789012 +1 for null byte*/
  184.  
  185. #define DAY_OF_WEEK     0
  186. #define DAY_OF_MONTH     5
  187. #define MONTH         8
  188. #define YEAR         12
  189. #define HOUR         15
  190. #define MINUTE         18
  191. #define SECOND         21
  192. #define TIMEZONE     24
  193.  
  194.     cp = &bufferPtr[SECOND];
  195.     ConvertToNum(cp, parts.seconds, FALSE);
  196.  
  197.     cp = &bufferPtr[MINUTE];
  198.     ConvertToNum(cp, parts.minutes, FALSE);
  199.  
  200.     cp = &bufferPtr[HOUR];
  201.     ConvertToNum(cp, parts.hours, FALSE);
  202.  
  203.     ncp = &"SunMonTueWedThuFriSat"[3* parts.dayOfWeek ];
  204.     cp = &bufferPtr[DAY_OF_WEEK];
  205.     cp[0] = ncp[0];
  206.     cp[1] = ncp[1];
  207.     cp[2] = ncp[2];
  208.     cp += 3;
  209.     ncp += 3;
  210.  
  211.     cp = &bufferPtr[YEAR];
  212.     ConvertToNum(cp, parts.year, FALSE);    /* last 2 digits of year */
  213.  
  214.     cp = &bufferPtr[MONTH];
  215.     ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[parts.month*3];
  216.     cp[0] = ncp[0];
  217.     cp[1] = ncp[1];
  218.     cp[2] = ncp[2];
  219.     cp += 3;
  220.     ncp += 3;
  221.  
  222.     cp = &bufferPtr[DAY_OF_MONTH];
  223.     ConvertToNum(cp, parts.dayOfMonth, TRUE);
  224.     }
  225.  
  226. }
  227. @
  228.  
  229.  
  230. 1.4
  231. log
  232. @Use function prototypes.
  233. @
  234. text
  235. @d17 1
  236. a17 1
  237. static char rcsid[] = "$Header: /sprite/src/lib/c/time/RCS/Time_ToAscii.c,v 1.3 88/07/25 11:16:44 ouster Exp Locker: kupfer $ SPRITE (Berkeley)";
  238. d101 1
  239. a101 1
  240.     strcpy(bufferPtr, " 00+00:00:00");
  241. d134 1
  242. a134 1
  243.     strcpy(bufferPtr, "Day, DD MMM YY 00:00:00");
  244. @
  245.  
  246.  
  247. 1.4.1.1
  248. log
  249. @Initial branch for Sprite server.
  250. @
  251. text
  252. @d17 1
  253. a17 1
  254. static char rcsid[] = "$Header: /sprite/src/lib/c/time/RCS/Time_ToAscii.c,v 1.4 90/09/11 14:28:34 kupfer Exp Locker: rab $ SPRITE (Berkeley)";
  255. @
  256.  
  257.  
  258. 1.3
  259. log
  260. @Lint.
  261. @
  262. text
  263. @d17 1
  264. a17 1
  265. static char rcsid[] = "$Header: Time_ToAscii.c,v 1.2 88/06/27 17:23:39 ouster Exp $ SPRITE (Berkeley)";
  266. d23 6
  267. @
  268.  
  269.  
  270. 1.2
  271. log
  272. @Use spriteTime.h instead of time.h.
  273. @
  274. text
  275. @d17 1
  276. a17 1
  277. static char rcsid[] = "$Header: Time_ToAscii.c,v 1.1 88/06/19 14:33:04 ouster Exp $ SPRITE (Berkeley)";
  278. d22 1
  279. @
  280.  
  281.  
  282. 1.1
  283. log
  284. @Initial revision
  285. @
  286. text
  287. @d17 1
  288. a17 1
  289. static char rcsid[] = "$Header: proto.c,v 1.2 88/03/11 08:39:08 ouster Exp $ SPRITE (Berkeley)";
  290. d21 1
  291. a21 1
  292. #include "time.h"
  293. @
  294.